package com.java.bubblesort;

public class BubbleSort {
	public static void main(String[] args) {
		test01();
	}

	// 初始化
	public static void test01() {

		int[] array = { 85, 54, 25, 62, 95, 12, 1, 56, 23 };
		System.out.println("冒泡排序之前的数组：");
		printArr(array);
		bubbleSort(array);
		System.out.println("冒泡排序之后的数组：");
		printArr(array);

	}

	// 冒泡排序的方法
	public static int[] bubbleSort(int[] array) {
		// 若长度为0，则返回值仍然显示输入数组
		if (array.length == 0) {
			return array;
		}
		// 外层for循环控制比较轮数，若总共n个数，则比较n-1次
		for (int i = 0; i < array.length; i++) {
			for (int j = 0; j < array.length - 1 - i; j++) {
				// 内层for循环控制两两比较次数，n-1-轮数
				if (array[j + 1] < array[j]) {
					int temp;
					temp = array[j];
					array[j] = array[j + 1];
					array[j + 1] = temp;
				}
			}
		}

		return array;

	}

	// 打印数组
	/**
	 * 增强型的for循环，增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合.
	 * part1定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型是一致的. part3当然还是循环体.
	 * i为元素的个数
	 * @param array
	 */

	public static void printArr(int[] array) {
		for (int i : array) {
			System.out.print(" " + i);
		}
		System.out.println();
	}
}
